home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 41 / Amiga Format CD41 (1999-06)(Future Publishing)(GB)[!][issue 1999-07].iso / -seriously_amiga- / cd-rom / acdb / src / acdb_gui.e < prev    next >
Text File  |  1999-04-28  |  5KB  |  245 lines

  1. OPT OSVERSION=37,MODULE
  2. OPT PREPROCESS,REG=5
  3.  
  4.  
  5. /*
  6.  *-- AutoRev header do NOT edit!!
  7.  *
  8.  *   Project         :   AMIGA CD BASE - program obsîugujâcy CDDB
  9.  *   File            :   gui.e
  10.  *   Description     :   obsîuga okienek programu
  11.  *   Copyright       :   ©1998-1999, Piotr Gapiïski
  12.  *   Author          :   Piotr Gapiïski
  13.  *   Creation Date   :   09.03.99
  14.  *   Current version :   1.0
  15.  *   Translator      :   AmigaE v3.3a
  16.  *
  17.  *-- REVISION HISTORY
  18.  *
  19.  *   1.0 (10.03.99)
  20.  *    o   wydzielone procedury interfejsu ze ôwiatem "zewnëtrznym"
  21.  *    o   ustandaryzowna obsîuga GUI (w wiëkszoôci aliasy funkcji dla easygui)
  22.  *
  23.  *   0.1 (26.12.98)
  24.  *
  25.  *-- REV_END --*
  26.  */
  27.  
  28.  
  29. MODULE 'tools/EasyGUI','easygui/plugins/iconify'
  30. MODULE 'intuition/intuition','intuition/screens','dos/dos','dos/var'
  31. MODULE 'exec/nodes','exec/lists','utility/tagitem','libraries/reqtools','libraries/gadtools'
  32. MODULE 'reqtools','amigalib/lists'
  33.  
  34.   #ifdef DEBUG
  35.     MODULE 'tools/debug'
  36.     #define D(a,b) kputfmt(a,b)
  37.   #endif
  38.   #ifndef DEBUG
  39.     #define D(a,b)
  40.   #endif
  41.  
  42.   EXPORT DEF prg_name, tt_pubname
  43.   DEF gui:PTR TO guihandle
  44.  
  45.  
  46.  
  47. EXPORT PROC guiSetup(title, desc, tags=NIL) HANDLE
  48.  
  49.   ->-
  50.   ->- procedura tworzâca gui (okienko) programu na predefiniowanym ekranie
  51.   ->- (lock jest zwalniany)
  52.   ->- zwraca TRUE/FALSE
  53.   ->-
  54.  
  55.   DEF screen
  56.  
  57.   gui := guiinitA(title, desc, tags)
  58.   screen := LockPubScreen(tt_pubname)
  59.   changescreen(gui, screen)
  60.  
  61.   ->-
  62.   ->- przed otwarciem odtwórz ostatnie poîoûenie okienka
  63.   ->-
  64.  
  65.   loadlocation(gui)
  66.   openwin(gui)
  67.   IF (screen) THEN UnlockPubScreen(NIL, screen)
  68.   RETURN TRUE
  69.  
  70. EXCEPT
  71. ENDPROC FALSE
  72.  
  73.  
  74.  
  75. EXPORT PROC guiCleanUp()
  76.  
  77.   ->-
  78.   ->- procedura zamykajâca i zwalniajâca pamiëê wykorzystywanâ przez okienko
  79.   ->- (gîówne)
  80.   ->- nie zwraca ûadnych wartoôci
  81.   ->-
  82.  
  83.   IF (gui)
  84.  
  85.     ->-
  86.     ->- zapisz ostatnie poîoûenie okienka
  87.     ->-
  88.  
  89.     savelocation(gui)
  90.     cleangui(gui)
  91.   ENDIF
  92.   gui := NIL
  93. ENDPROC
  94.  
  95.  
  96.  
  97. EXPORT PROC guiOpen() IS openwin(gui)
  98. EXPORT PROC guiClose() IS closewin(gui)
  99. EXPORT PROC guiDisable() IS blockwin(gui)
  100. EXPORT PROC guiEnable() IS unblockwin(gui)
  101. EXPORT PROC guiGadgetAble(gadget, able=FALSE) IS setdisabled(gui, gadget, able)
  102. EXPORT PROC guiCheckGadgets() IS checkgui(gui)
  103.  
  104.  
  105. EXPORT PROC guiSigs()
  106.  
  107.   ->-
  108.   ->- funkcja pobierajâca sygnaîy aktywne GUI
  109.   ->- zwraca maskë sygnaîów lub 0
  110.   ->-
  111.  
  112.   DEF sigs
  113.  
  114.   sigs := IF (gui) THEN gui.sig ELSE 0
  115. ENDPROC sigs
  116.  
  117.  
  118.  
  119. EXPORT PROC guiHandle()
  120.  
  121.   ->-
  122.   ->- funkcja obsîugujâca caîe GUI
  123.   ->- zwraca TRUE/FALSE (FALSE gdy user zamknâî GUI)
  124.   ->-
  125.  
  126.   DEF res
  127.  
  128.   res := guimessage(gui)
  129. ENDPROC (res < 0)
  130.  
  131.  
  132.  
  133. EXPORT PROC guiInformUser(body,gads=NIL,args=NIL)
  134.  
  135.   ->-
  136.   ->- jeûeli gui jest zainicjalizowane to pojawi sië reqtools requester
  137.   ->- jeûeli nie, wiadomoôê zostanie wyôwietlona w okienku CLI
  138.   ->- zwraca numer wybranego requestera lub FALSE gdy nie moûna go byîo
  139.   ->- wyôwietliê
  140.   ->-
  141.  
  142.   DEF tmp[200]:STRING, rc, wnd:PTR TO window
  143.  
  144.   IF (wnd := IF (gui) THEN gui.wnd ELSE NIL)
  145.  
  146.     ->-
  147.     ->- okienko jest otwarte - wybierz requester
  148.     ->-
  149.  
  150.     IF (gads = NIL) THEN gads:=' _Ok '
  151.     rc := RtEZRequestA(body, gads, NIL, args,
  152.           [
  153.             RT_WINDOW,     gui.wnd,
  154.             RTEZ_REQTITLE, prg_name,
  155.             RT_LOCKWINDOW, TRUE,
  156.             RT_REQPOS,     REQPOS_CENTERWIN,
  157.             RT_UNDERSCORE, "_",
  158.             RTEZ_FLAGS,    EZREQF_CENTERTEXT,
  159.             TAG_DONE
  160.           ])
  161.   ELSE
  162.  
  163.     ->-
  164.     ->- CLI - output
  165.     ->-
  166.  
  167.     stringFmt(tmp, body, args)
  168.     WriteF('\s\n', tmp)
  169.     rc := FALSE
  170.   ENDIF
  171. ENDPROC rc
  172.  
  173.  
  174.  
  175. EXPORT PROC stringFmt(estring, format, args=NIL)
  176.  
  177.   ->-
  178.   ->- formatuje stringi (format,args) i wynik zapisuje w estringu
  179.   ->- akceptuje wszystkie symbole RawDoFmt(), args jest tablicâ argumentów
  180.   ->- zakoïczonâ NIL
  181.   ->- NIE SPRAWDZA CZY SFORMATOWANY TEXT MIESCI SIE W ESTRING'u!!!!
  182.   ->- zwraca wskaúnik na estring
  183.   ->-
  184.  
  185.     MOVE.L    format,A0
  186.     MOVE.L    args,A1
  187.     MOVEM.L   A2/A3/A6,-(A7)
  188.     LEA       putProc(PC),A2
  189.     MOVE.L    estring,A3
  190.     MOVE.L    $4.W,A6
  191.     JSR       -522(A6)
  192.     BRA.B     endOf
  193.  
  194.   putProc:
  195.     MOVE.B    D0,(A3)+
  196.     RTS
  197.  
  198.   endOf:
  199.     MOVEM.L    (A7)+,A2/A3/A6
  200. ENDPROC estring
  201. EXPORT PROC isListEmpty(list:PTR TO lh) IS IsListEmpty(list)
  202.  
  203.  
  204.  
  205.   ->-
  206.   ->- prywatnie (po godzinach)
  207.   ->- procedury wspomagajâce obsîugë okienek programu
  208.   ->-
  209.  
  210.  
  211.  
  212. PROC loadlocation(gui:PTR TO guihandle)
  213.  
  214.   ->-
  215.   ->- odczytuje zmiennâ globalnâ z zapisanymi wspóîrzâdnymi gîownego okienka,
  216.   ->- zmienia poîoûenie okienka (najlepiej jest przy EG_HILE/openwin()
  217.   ->- nie zwraca ûadnej wartoôci
  218.   ->-
  219.  
  220.   DEF pos:ibox,len
  221.  
  222.   len := GetVar(prg_name, pos, SIZEOF ibox, (GVF_GLOBAL_ONLY OR GVF_BINARY_VAR OR GVF_DONT_NULL_TERM))
  223.   IF (len <> -1)
  224.     movewin(gui, pos.left, pos.top)
  225.     sizewin(gui, pos.width, pos.height)
  226.   ENDIF
  227. ENDPROC
  228.  
  229.  
  230.  
  231. PROC savelocation(gui:PTR TO guihandle)
  232.  
  233.   ->-
  234.   ->- zapisuje poîoûenie i wymiary okienka od zmiennej globalnej
  235.   ->- nie zwraca ûadnej wartoôci
  236.   ->-
  237.  
  238.   DEF pos:PTR TO ibox,wnd:PTR TO window
  239.  
  240.   IF (wnd := gui.wnd)
  241.     pos := [wnd.leftedge, wnd.topedge, wnd.width, wnd.height]:ibox
  242.     SetVar(prg_name, pos, SIZEOF ibox, GVF_GLOBAL_ONLY)
  243.   ENDIF
  244. ENDPROC
  245.